package com.lancoo.edu.platform.operation.commons.domain.api.user;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 基础平台用户基本信息
 * @author pky
 **/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserInfo implements Serializable {
    /**
     * 用户ID
     */
    private String userId;
    /**
     * 用户名
     */
    private String userName;
    /**
     * 性别（男/女/保密）
     */
    private String gender;
    /**
     * 年级ID
     */
    private String gradeId;
    /**
     * 年级名称
     */
    private String gradeName;
    /**
     * 统一的年级标志
     */
    private String globalGrade;
    /**
     * 班级/教师组/专家组ID
     */
    private String groupId;
    /**
     * 班级/教师组/专家组名称
     */
    private String groupName;
    /**
     * 专家、教研者的专研学科ID串，多个用英文“,”分割
     */
    private String subjectIds;
    /**
     * 专家、教研者的专研学科名称串，多个用英文“,”分割
     */
    private String subjectNames;
    /**
     * 用户类别（0—学校管理员；1—教师；2—学生；3—家长；4—教育专家；5—教育局领导；6—教育局管理员）；
     */
    private Integer userType;
    /**
     * 用户级别（根据用户类别，学校管理员（1—普通管理员；2—超级管理员）；教师（100000 等，后 5 位分别代表：任
     * 课教师、班主任、教研者、学科主管、校领导）；学生（0—普通学生；1—班长）；专家（0）；教育局领导（0）；教
     * 育局端管理员（1—普通管理员；2—超级管理员））
     */
    private Integer userClass;
    /**
     * 用户头像绝对地址
     */
    private String photoPath;
    /**
     * 身份代码，如‘IC0002’
     */
    private String identityCode;
    /**
     * 身份名称，如‘教务管理员’
     */
    private String identityName;
    /**
     * 上次登录时间字符串
     */
    private String preLoginTime;
    /**
     * 上次登录IP
     */
    private String preLoginIp;
    /**
     * 快捷用户名
     */
    private String shortName;
    /**
     * 个性签名
     */
    private String sign;

    /**
     * 学校所属阶段：小学类型(3, 8, 10)；初中类型(4, 8, 9, 10)；高中类型(5, 9, 10)；其他
     */
    @NotNull(message = "学校所属阶段不可为空")
    private Integer schoolLevel;
    /**
     * 所属学校ID
     */
    private String schoolId;
    /**
     * 所属学校名称
     */
    private String schoolName;
    /**
     * 基础平台地址
     */
    private String schoolBaseUrl;
    /**
     * 用户档案更新时间
     */
    private String updateTime;
    /**
     * 登录后的令牌
     */
    private String token;
    /**
     * 登录来源信息（Type|OpenID|MacType）
     * Type 值：0-账号密码登录，1-QQ登录，2-新浪登录，3-人人网登录，4-微信登录
     * OpenID 值：InnerID-账号密码登录；OpenID-第三方平台登录
     * MacType 值：1-学校机房终端，2-个人PC，3-安卓，4-IOS，5-公司终端
     */
    private String loginInfo;
    /**
     * 学生（或家长）的学习阶段：A-小学；B-初中；C-高中；D-中职；E-高职；F-大学
     */
    private String studyLevel;
    /**
     * 点控状态，1：点控可用；0：考过点控上限；-1：未检测到加密锁；-2：加密锁已过试用期；
     * -3：没有购买该产品；-4：加密锁接口调用错误；-5：加密锁时钟错误；-10：锁控服务器异常。
     */
    private Integer lockerState;

}
